﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using LCTMoodle.Models.ViewModels;
using LCTMoodle.Models.DataModels;

namespace LCTMoodle.Service
{
    public class KhoaHocService : Service
    {
        /// <summary>
        /// Lấy toàn bộ khóa học
        /// </summary>
        /// <returns></returns>
        public static List<KhoaHocViewModel> layKhoaHoc()
        {
            return executeDataReader_List<KhoaHocViewModel>
            (
                "layKhoaHoc",
                new object[0]
            );
        }
        /// <summary>
        /// Lấy khóa học của người dùng
        /// </summary>
        /// <param name="maNguoiDung">Mã người dùng</param>
        /// <returns></returns>
        public static List<KhoaHocViewModel> layKhoaHoc_CuaNguoiDung(int maNguoiDung)
        {
            return executeDataReader_List<KhoaHocViewModel>
                (
                    "layKhoaHoc_CuaNguoiDung",
                    new object[]
                    {
                        maNguoiDung
                    }
                );
        }
        /// <summary>
        /// Lấy khóa học không của người dùng
        /// </summary>
        /// <param name="maNguoiDung">Mã người dùng</param>
        /// <returns></returns>
        public static List<KhoaHocViewModel> layKhoaHoc_KhongCuaNguoiDung(int maNguoiDung)
        {
            return executeDataReader_List<KhoaHocViewModel>
                (
                    "layKhoaHoc_KhongCuaNguoiDung",
                    new object[]
                    {
                        maNguoiDung
                    }
                );
        }
        /// <summary>
        /// Tìm khóa học
        /// </summary>
        /// <param name="thongTin">Thông tin tìm kiếm</param>
        public static List<KhoaHocViewModel> layKhoaHocTheoThongTin_TimKiem(string thongTin)
        {
            return executeDataReader_List<KhoaHocViewModel>
                (
                    "layKhoaHocTheoThongTin_TimKiem",
                    new object[]
                    {
                        thongTin
                    }
                );
        }

        /// <summary>
        /// Lấy khóa học theo mã khóa học
        /// </summary>
        /// <param name="maKhoaHoc">Mã khóa học</param>
        /// <returns></returns>
        public static KhoaHocViewModel layKhoaHocTheoMaKhoaHoc(int maKhoaHoc)
        {
            return executeDataReader<KhoaHocViewModel>
            (
                "layKhoaHocTheoMaKhoaHoc",
                new object[] 
                {
                    maKhoaHoc
                }
            );
        }
        /// <summary>
        /// Lấy mã khóa học theo mã bài viết
        /// </summary>
        /// <param name="maBaiViet">Mã bài viết</param>
        /// <returns>Mã khóa học</returns>
        public static int layMaKhoaHocTheoMaBaiViet(int maBaiViet)
        {
            return Service.executeScalar<int>
                (
                    "layMaKhoaHocTheoMaBaiViet",
                    new object[]
                    {
                        maBaiViet
                    }
                );
        }
        /// <summary>
        /// Lấy mã khóa học theo mã bình luận
        /// </summary>
        /// <param name="maBinhLuan">Mã bình luận</param>
        /// <returns>Mã khóa học</returns>
        public static int layMaKhoaHocTheoMaBinhLuan(int maBinhLuan)
        {
            return Service.executeScalar<int>
                (
                    "layMaKhoaHocTheoMaBinhLuan",
                    new object[]
                    {
                        maBinhLuan
                    }
                );
        }

        /// <summary>
        /// Lấy mã khóa học theo mã nhóm quyền
        /// </summary>
        /// <param name="maNhomQuyen">Mã nhóm quyền</param>
        /// <returns>Mã khóa học</returns>
        public static int layMaKhoaHocTheoMaNhomQuyen(int maNhomQuyen)
        {
            return executeScalar<int>
                (
                    "layMaKhoaHocTheoMaNhomQuyen",
                    new object[]
                    {
                        maNhomQuyen
                    }
                );
        }

        /// <summary>
        /// Thêm khóa học
        /// </summary>
        /// <param name="khoaHoc">Tên khóa học, mã giảng viên, mô tả, mã chủ đề</param>
        public static int themKhoaHoc(KhoaHocDataModel khoaHoc)
        {
            return Service.executeScalar<int>
                (
                    "themKhoaHoc",
                    new object[]
                    {
                        khoaHoc.tenKhoaHoc,
                        khoaHoc.maGiangVien,
                        khoaHoc.moTa,
                        khoaHoc.maChuDe
                    }
                );
        }

        /// <summary>
        /// Xóa khóa học theo mã khóa học
        /// </summary>
        /// <param name="maKhoaHoc">Mã khóa học</param>
        public static bool xoaKhoaHocTheoMaKhoaHoc(int maKhoaHoc)
        {
            return executeNonQuery
                (
                    "xoaKhoaHocTheoMaKhoaHoc",
                    new object[]
                        {
                            maKhoaHoc
                        }
                );
        }
    }
}